With the dramatic decrease in costs of data processing equipment in recent years there have been a number of significant advances in data processing equipment for use in homes and small offices. While such equipment, often referred to as "personal computers", initially was utilized to do one task at a time, software became available to allow two or more application programs to utilize the single microprocessor by alternating their utilization thereof. This solution allowed more than one task to be performed at a time, but the speed of operation of the tasks were, of course, slower than when each task had full use of the single microprocessor.
One way to solve the above-mentioned speed problem was to utilize a faster processor, and this is one of the advances in data processing equipment that has become available. However, in some cases, the availability of software to fully utilize the increased potential of more powerful processors has lagged behind the development of the faster microprocessors.
Currently available software may be utilized, nevertheless, in multitasking systems by using multiple processors of the more elementary type, for which the software was developed. When multiple processors are used, however, there must be some control over when, and in what priority, the multiple processors have access to resources such as system memory.
In one prior art system employing a main processor and a secondary processor (co-processor) sharing utilization of a single bus, the main processor, with the aid of an advanced operating system, allocated portions of a large, main memory to various devices, such as the co-processor, direct memory access controller (DMA), and other intelligent controllers. However, such a sophisticated operating system is not commonly utilized with the so called "personal computers".
Another approach to the allocation of memory to multiple processors has been to provide separate memory for these additional processors or other intelligent controllers, which, for the remainder of this description will be referred to, hereinafter, as busmaster devices. This solution is found, for example, in some of the color or graphics display adapter cards, which often include a significant portion of memory on the card. This eliminates the need for a highly sophisticated operating system to allocate main memory space to the functions provided by the adapter card, but is not a practical solution for the large amount of memory that might be desired to support the addition of a general purpose co-processor intended to concurrently run an additional application program which might require a relatively large amount of memory.
It would, therefore, be highly advantageous to provide a large, common memory to be allocated in subdivisions, or pages, to each of a plurality of processors sharing a bus, without the necessity of utilizing a highly advanced operating system or "on-board", rigidly dedicated memory, individually associated with the each of the processors.